//大致思想：遍历数组用对象存储出现次数，再利用此对象生成一个二维数组，将二维数组进行排序，再利用滑动窗口
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
let flag = false, count, arrflag = false, n, k, arr;
rl.on('line', function (line) {
  if (!flag) { // 初始为false 改成-1
    count = Number(line); // 读出来这个技术区count改成n
    flag = true
  } else {
    if (!arrflag) { // 这个时候没有读取
      [n, k] = line.split(' ').map(item => Number(item)) // 读出n和k
      arrflag = true // 只读一次
    } else {
      arrflag = false; // 重置
      arr = line.split(' ').map(item => Number(item)); // 读取数组
      let map = {}; // 一个字典记录出现的次数
      for (let i = 0; i < n; i++) { // 从第一个到din个
        if (!map[arr[i]]) { // 不存在就是0
          map[arr[i]] = 0;
        }
        map[arr[i]]++; // 然后++
      }
      let help = [] // 辅助二维数组
      Object.keys(map).forEach(item => { // 获取所有的key 遍历他们
        help.push([Number(item), Number(map[item])]) // 放入这个[key,和次数]
      })
      help.sort((a, b) => a[0] - b[0]); // 从第一位进行排序
      let left = 0, // 滑动窗口
        len = help.length, // 长度
        resf = false // 结果f
      sum = 0; // 和
      for (let right = 0; right < len; right++) {// 右边下标
        sum += help[right][1]; // 和+这个出现的次数
        while (sum > k) { // 当和大于k的时候
          left++; // 左边界就向左移动
          sum -= help[left][1]; // 和减去痴线的次数
        }
        if (sum == k) { // 如果相同
          resf = true; // 设置为true
          console.log([help[left][0], help[right][0]].join(' ')); // 打印这个
          break; // 退出
        }
      }
      if (!resf) { // 不存在就打印-1
        console.log(-1)
      }
    }
  }
});